package com.penghaisoft.microwms.base.web.dataauth.dao;

import com.penghaisoft.microwms.common.base.model.BaseUser;
import com.penghaisoft.microwms.common.base.model.BaseUserDataAuth;
import com.penghaisoft.microwms.common.dto.BaseUserDataAuthForm;
import com.penghaisoft.microwms.common.page.Pager;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BaseUserDataAuthMapper {
    int deleteByPrimaryKey(String userId);

    int insert(BaseUserDataAuth record);

    int insertSelective(BaseUserDataAuth record);

    BaseUserDataAuth selectByPrimaryKey(String userId);

    int updateByPrimaryKeySelective(BaseUserDataAuth record);

    int updateByPrimaryKey(BaseUserDataAuth record);
    
    /**
     * 新增报表用户的工厂类型
     * @param records
     * @return
     */
    int insertReportUserFactories(List<BaseUserDataAuth> records);
    
    
    /** 
    * @Title: queryUserDataAuthFactoryType 
    * @Description: 查询报表用户数据权限的工厂类型
    * @author zhangxu 
    * @2017年4月7日:2017年4月7日:下午1:38:57
    * @param @param user
    * @param @return    
    * @return List<String>    
    * @throws 
    */
    List<String> queryUserDataAuthFactoryType(BaseUser user);
    
    
    /** 
    * @Title: queryUserDataAuthsByFactoryType 
    * @Description: 查询报表用户指定工厂类型的工厂
    * @author zhangxu 
    * @2017年4月7日:2017年4月7日:下午1:42:28
    * @param @param factoryType
    * @param @return    
    * @return List<String>    
    * @throws 
    */
    List<String> queryReportUserFactoryCodeByType(String factoryType);
    
	int deleteUserDataAuth(BaseUserDataAuth baseUserDataAuth);
	

	/** 
	* @Title: insertBuzUserDataAuthBatch 
	* @Description: 插入业务用户的各种权限
	* @author zhangxu 
	* @2017年4月26日:2017年4月26日:上午10:52:15
	* @param @param dataAuths    
	* @return void    
	* @throws 
	*/
	void insertBuzUserDataAuthBatch(List<BaseUserDataAuth> dataAuths);

	List<BaseUserDataAuth> queryBuzUserDataAuths(BaseUserDataAuth param);

	/** 
	* @Title: queryUserDataAuth 
	* @Description: 登录时候获取当前用户的数据权限
	* @author zhangxu 
	* @2017年4月26日:2017年4月26日:下午2:31:39
	* @param @param userInfo
	* @param @return    
	* @return List<BaseUserDataAuth>    
	* @throws 
	*/
	List<BaseUserDataAuth> queryUserDataAuth(BaseUser userInfo);
	/**
	 * @Description: 获取用户数据权限数量
	 * @param @param t
	 * @param @return   
	 * @return Long  
	 * @author sun_yq
	 * @date 2017年9月11日 下午1:19:28
	 */
	public Long queryFormCount(@Param("entity") BaseUserDataAuthForm t);
	/**
	 * @Description:获取用户数据 权限列表 
	 * @param @param page
	 * @param @param t
	 * @param @return   
	 * @return List<BaseUserDataAuthForm>  
	 * @author sun_yq
	 * @date 2017年9月11日 下午1:41:14
	 */
	public List<BaseUserDataAuthForm> queryFormList(@Param("page") Pager<BaseUserDataAuthForm> page, @Param("entity") BaseUserDataAuthForm t);
}